package _7_event_listener;

import java.util.Observable;
import java.util.Observer;

public class ObservableObject extends Observable {
    // Observable的setChanged为protected,必须在主题实现中实现
    public void setChanged() {
        super.setChanged();
    }

    public static void main(String[] args) {
        ObservableObject observableObject = new ObservableObject();
        observableObject.addObserver(new Observer() {
            @Override
            public void update(Observable o, Object arg) {
                System.out.println("执行观察者的update方法");
            }
        });

        //可以查看状态是否改变
        boolean status = observableObject.hasChanged();
        System.out.println("状态是否改变:" + status);
        observableObject.notifyObservers();
        //可以查看共有多少待通知的对象
        System.out.println("将通知人数为:"+observableObject.countObservers());


        //改变状态,这里是重写了Observable的setChanged方法
        observableObject.setChanged();
        status = observableObject.hasChanged();
        System.out.println("状态是否改变:"+status);
        observableObject.notifyObservers();
        System.out.println("通知人数为:"+observableObject.countObservers());

        //通知完之后,状态会恢复原样,即为false,等待下一次需要状态的改变
        status = observableObject.hasChanged();
        System.out.println("状态是否改变:"+status);
    }
}
